module.exports = {
    isDateTime:function(value){
        let reg1 = /[1-9]\d{3}\/(((0[13578]|1[02])\/(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)\/(0[1-9]|[12][0-9]|30))|(02\/(0[1-9]|[1][0-9]|2[0-9])))\s+([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/
        let reg2 = /[1-9]\d{3}-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-9])))\s+([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/
    
        let arr = null
    
        if(reg1.test(value)){
            arr = value.split('/')
        }else if(reg2.test(value)){
            arr = value.split('-')
        }else{
            return false
        }
        
        let year = parseInt(arr[0]);
        let month = parseInt(arr[1]);
        let day = parseInt(arr[2]);
    
        if (month != 2 || day < 29) { //满足上面的正则判断，非2月份或者当前且当前日期没有到达第29天，为正确日期时间
            return true;
        }
    
        // 能被400整除，或者能被4整除但不能被100整除的都是闰年，其余的年份均为平年
        if (!(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) && 
            (month == 2 && day > 28)) {
            return false
        } 
    
        return true;
    },

    isDate:function(value){
        let reg1 = /[1-9]\d{3}\/(((0[13578]|1[02])\/(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)\/(0[1-9]|[12][0-9]|30))|(02\/(0[1-9]|[1][0-9]|2[0-9])))$/
        let reg2 = /[1-9]\d{3}-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-9])))$/
    
        let arr = null
    
        if(reg1.test(value)){
            arr = value.split('/')
        }else if(reg2.test(value)){
            arr = value.split('-')
        }else{
            return false
        }
        
        let year = parseInt(arr[0]);
        let month = parseInt(arr[1]);
        let day = parseInt(arr[2]);
    
        if (month != 2 || day < 29) { //满足上面的正则判断，非2月份或者当前且当前日期没有到达第29天，为正确日期时间
            return true;
        }
    
        // 能被400整除，或者能被4整除但不能被100整除的都是闰年，其余的年份均为平年
        if (!(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) && 
            (month == 2 && day > 28)) {
            return false
        } 
    
        return true;
    }
}